package client.structural.bridge.eg_2;

import org.junit.Test;
import org.xml.sax.SAXException;
import uml.structural.bridge.eg_2.Image;
import uml.structural.bridge.eg_2.ImageImpl;
import util.bean.BeanUtil;

import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;

/**
 * 桥接模式【柄体模式、接口模式】--客户端<br>
 * 针对抽象、实现两个维度编程，任意一个维度都可独立进行扩展，已有系统无需做出任何修改<br>
 * 桥接模式是设计Java虚拟机和JDBC等驱动程序的核心模式之一，在软件开发中，如果一个类或者一个系统有多个变化维度，都可用桥接模式对其进行设计。<br>
 * on 2022/12/23 23:35
 */
public class Client {
    @Test
    public void t() throws ParserConfigurationException, IOException, ClassNotFoundException, InstantiationException, IllegalAccessException, SAXException {
        Image image = BeanUtil.newBean(
                Image.class,
                new File("src/main/resources/xml/bridge.xml"),
                "refinedAbstractionName");
        ImageImpl imageImpl = BeanUtil.newBean(
                ImageImpl.class,
                new File("src/main/resources/xml/bridge.xml"),
                "concreteImplementationName");
        image.setImpl(imageImpl);
        image.paint("cpu");
    }
}
